package com.liuqi.openai.model.chat;

import com.liuqi.openai.data.message.AiMessage;
import com.liuqi.openai.data.message.ChatMessage;
import com.liuqi.openai.data.message.UserMessage;
import com.liuqi.openai.model.OpenAiModelException;
import com.liuqi.openai.model.output.Response;
import java.util.Arrays;
import java.util.List;

/**
 * 对话模型  opanai api请求路径: /chat/completions
 *
 * @author liuqi
 * @date 2025/7/19
 * @see com.liuqi.openai.model.OpenAiChatModel
 **/
public interface ChatModel {

    default Response<AiMessage> generate(String messages) throws OpenAiModelException {
        return generate(UserMessage.from(messages));
    }

    default Response<AiMessage> generate(ChatMessage messages) throws OpenAiModelException {
        return generate(Arrays.asList(messages));
    }

    /**
     * 基于一系列消息从模型生成响应。
     * 通常，该序列按以下顺序包含消息:
     * 系统(可选)-用户- AI -用户- AI -用户...
     *
     * @param messages  消息列表
     * @return  模型生成的响应
     */
    Response<AiMessage> generate(List<ChatMessage> messages) throws OpenAiModelException;

}
